Application development is typically performed using a development architecture that reflects a traditional phased development and deployment approach. After being developed in a development environment, applications may be moved to a testing environment where it can be determined whether the applications are performing as expected. For example, a server may be tested by manually creating a number of test scripts which generate different requests that are designed to simulate scenarios the server is expected to encounter in deployment. The results of the test scripts can be analyzed to determine whether the server has passed the testing phase and is ready to be deployed to a production environment where the server will receive live requests from users. However, traditional testing approaches require significant manual effort to design and write appropriate test scripts to cover the various scenarios needed to effectively test the system. Additionally, for high volume servers, such testing approaches cannot simulate how the server will behave at load, when it is receiving potentially billions of requests.